import { isFunction } from '@/utils/validate'

/**
 * 权限类型枚举，菜单，按钮
 */
const AuthTypeEnum = {
  MENU: {
    label: '菜单',
    value: 0,
    icon: 'menu',
    tag: ''
  },
  BUTTON: {
    label: '按钮',
    value: 1,
    icon: 'button',
    tag: 'danger'
  },
  API: {
    label: 'API',
    value: 2,
    icon: 'api',
    tag: 'success'
  },

  /**
   * 获取所有的枚举
   * @return {*[]}枚举数组
   */
  allEnums() {
    let enums = []
    for (let key in AuthTypeEnum) {
      if (!isFunction(AuthTypeEnum[key])) {
        enums.push(AuthTypeEnum[key])
      }
    }
    return enums
  },
  /**
   * 根据 label 获取 枚举
   * @param label label
   * @return {*} 对应的枚举
   */
  getEnumByLabel(label) {
    for (let key in AuthTypeEnum) {
      if (AuthTypeEnum[key].label === label) {
        return AuthTypeEnum[key]
      }
    }
    return {}
  },

  /**
   * 根据 label 获取 枚举
   * @param value value
   * @return {*} 对应的枚举
   */
  getEnumByValue(value) {
    for (let key in AuthTypeEnum) {
      if (AuthTypeEnum[key].value === value) {
        return AuthTypeEnum[key]
      }
    }
    return {}
  },
}
// 设置当前对象只读
Object.freeze(AuthTypeEnum)

export default AuthTypeEnum
